package com.ruoyi.hxf.mapper;

import com.ruoyi.hxf.domain.Course;
import com.ruoyi.hxf.domain.Teacher;
import com.ruoyi.hxf.domain.TeacherCourse;
import org.apache.ibatis.annotations.Param;


import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


/**
 * 课程的管理Mapper接口
 *
 * @author hxf
 * @date 2022-12-16
 */
public interface RosterMapper {


    /**
     * 课表的建立插入
     *
     * @param course 每节课内容
     */
    void insert(Course course);

    /**
     * 根据班级ID查询班级的课程表
     *
     * @param classId 班级Id
     * @return
     */
    List<Course> listClassCourse(@Param("classId") String classId);

    /**
     * 根据班级的ID逻辑删除
     *
     * @param classId 班级Id
     * @return
     */
    int deleteWithValidByIds(@Param("classId") String classId);

    /**
     * 查询是否存在课表
     *
     * @param id      星期几
     * @param classId 班级
     * @return
     */
    Boolean ExistenceClassCourse(@Param("id") Long id, @Param("classId") Long classId);

    /**
     * 课表的修改
     *
     * @param course 每节课内容
     */
    void update(Course course);

    /**
     * 查询老师的Id
     *
     * @param Teacher 名字
     * @param School  角色
     * @return
     */
    Long selectTeacherId(@Param("Teacher") String Teacher, @Param("School") String School);

    /**
     * 查询班级的名称
     *
     * @param classId 班级的Id
     * @return
     */
    String selectClassName(@Param("classId") Long classId);

    /**
     * 查询老师是否排课了今天
     *
     * @param id        等级
     * @param label     星期几
     * @param teacherId 老师id
     * @return
     */
    Boolean selectTeacherCourse(@Param("id") Long id, @Param("label") String label, @Param("teacherId") Long teacherId);


    /**
     * 老师排课
     *
     * @param teacherCourse
     */
    void insertTeacherCourse(TeacherCourse teacherCourse);

    /**
     * 修改第一节课班级
     *
     * @param oneC      第一节课班级
     * @param id        等级
     * @param label     星期几
     * @param teacherId 老师id
     */
    void updateTeacherCourseOne(@Param("oneC") String oneC, @Param("id") Long id, @Param("label") String label, @Param("teacherId") Long teacherId);

    /**
     * 修改第二节课班级
     *
     * @param twoC      第二节课班级
     * @param id        等级
     * @param label     星期几
     * @param teacherId 老师id
     */
    void updateTeacherCourseTwo(@Param("twoC") String twoC, @Param("id") Long id, @Param("label") String label, @Param("teacherId") Long teacherId);


    /**
     * 修改第三节课班级
     *
     * @param threeC    第三节课班级
     * @param id        等级
     * @param label     星期几
     * @param teacherId 老师id
     */
    void updateTeacherCourseThree(@Param("threeC") String threeC, @Param("id") Long id, @Param("label") String label, @Param("teacherId") Long teacherId);

    /**
     * 修改第四节课班级
     *
     * @param fourC     第四节课班级
     * @param id        等级
     * @param label     星期几
     * @param teacherId 老师id
     */
    void updateTeacherCourseFour(@Param("fourC") String fourC, @Param("id") Long id, @Param("label") String label, @Param("teacherId") Long teacherId);

    /**
     * 修改第五节课班级
     *
     * @param fiveC     第五节课班级
     * @param id        等级
     * @param label     星期几
     * @param teacherId 老师id
     */
    void updateTeacherCourseFive(@Param("fiveC") String fiveC, @Param("id") Long id, @Param("label") String label, @Param("teacherId") Long teacherId);

    /**
     * 修改第六节课班级
     *
     * @param sixC      第六节课班级
     * @param id        等级
     * @param label     星期几
     * @param teacherId 老师id
     */
    void updateTeacherCourseSix(@Param("sixC") String sixC, @Param("id") Long id, @Param("label") String label, @Param("teacherId") Long teacherId);

    /**
     * 根据等级(星期几)和班级id查当天的课程详细信息
     *
     * @param id      等级
     * @param classId 班级id
     * @return
     */
    Course selectClassInformation(@Param("id") Long id, @Param("classId") Long classId);

    /**
     * 根据用户Id查用户是什么老师
     *
     * @param userId 用户Id
     * @return
     */
    String selectUserByIdRoleName(@Param("userId") Long userId);

    /**
     * 删除老师课表
     *
     * @param userId
     * @param userId1
     * @param nowDate
     */
    void deleteTeacherClassById(@Param("userId") Long userId, @Param("userId1") Long userId1, @Param("nowDate") Date nowDate);

    /**
     * 查询老师课表
     *
     * @param teacherId
     * @return
     */
    List<TeacherCourse> selectTeacherOne(@Param("teacherId") Long teacherId);

    /**
     * 找到班级中根据id是第几节删除当天的老师(第一节)
     *
     * @param userName    老师名字
     * @param oldRoleName 角色名称(eg:语文老师)
     * @param id          等级
     */
    void updateCourseTeacherOneT(@Param("userName") String userName, @Param("oldRoleName") String oldRoleName, @Param("id") int id);

    /**
     * 找到班级中根据id是第几节删除当天的老师(第二节)
     *
     * @param userName    老师名字
     * @param oldRoleName 角色名称(eg:语文老师)
     * @param id          等级
     */
    void updateCourseTeacherTwoT(@Param("userName") String userName, @Param("oldRoleName") String oldRoleName, @Param("id") int id);

    /**
     * 找到班级中根据id是第几节删除当天的老师(第三节)
     *
     * @param userName    老师名字
     * @param oldRoleName 角色名称(eg:语文老师)
     * @param id          等级
     */
    void updateCourseTeacherThreeT(@Param("userName") String userName, @Param("oldRoleName") String oldRoleName, @Param("id") int id);

    /**
     * 找到班级中根据id是第几节删除当天的老师(第四节)
     *
     * @param userName    老师名字
     * @param oldRoleName 角色名称(eg:语文老师)
     * @param id          等级
     */
    void updateCourseTeacherFourT(@Param("userName") String userName, @Param("oldRoleName") String oldRoleName, @Param("id") int id);

    /**
     * 找到班级中根据id是第几节删除当天的老师(第五节)
     *
     * @param userName    老师名字
     * @param oldRoleName 角色名称(eg:语文老师)
     * @param id          等级
     */
    void updateCourseTeacherFiveT(@Param("userName") String userName, @Param("oldRoleName") String oldRoleName, @Param("id") int id);

    /**
     * 找到班级中根据id是第几节删除当天的老师(第六节)
     *
     * @param userName    老师名字
     * @param oldRoleName 角色名称(eg:语文老师)
     * @param id          等级
     */
    void updateCourseTeacherSixT(@Param("userName") String userName, @Param("oldRoleName") String oldRoleName, @Param("id") int id);


    /**
     * 角色名称和姓名
     *
     * @param userId 用户Id
     * @return
     */
    Teacher selectUserByIdRoleNameMaster(@Param("userId") Long userId);

    /**
     * 根据用户id查询用户姓名
     *
     * @param userId 用户id
     * @return
     */
    Teacher selectUserByIdName(@Param("userId") Long userId);

    /**
     * 查询班级名字
     *
     * @param classId 班级id
     * @param userId  班主任id
     * @return
     */
    Teacher selectTeacherMasterWhere(@Param("classId") Long classId, @Param("userId") Long userId);

    /**
     * 查询班级姓名
     *
     * @param userId 班主任id
     * @return
     */
    Teacher selectTeacherMasterWhereClass(@Param("userId") Long userId);

    /**
     * 根据名字查询id
     * @param userName
     * @return
     */
    Long selectUserByNameId(@Param("userName") String userName);


    /**
     * 根据班级查询年级
     * @param deptId
     * @return
     */
    Long selectGradeId(@Param("deptId")Long deptId);
}
